<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>输入数字转换汉语输出</title>
</head>

<body>
    <script>
        var input = 123456
        const NUMS = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
        const QUOT = ['', '万', '亿', '兆', '京', '垓', '秭', '穰', '沟', '涧', '正', '载', '极', '恒河沙', '阿僧祗', '那由他', '不可思议', '无量', '大数'];

        // 递归分级划分
        // unit 级别:  万 \ 亿
        function convertNumberToChinese(num) {
            let str = '';
            let numStr = parseInt(num + '');
            let unit = 0
            while (numStr) {
                // debugger
                // 每次取出四位计算
                let forths = numStr % 10000
                // 计算,将新计算的添加到原先计算的前面  十二万 + 五千四百三十七
                str = processChunk(forths, unit) + str
                // 移除后四位
                numStr = Math.floor(numStr / 10000)
                unit++
            }

            return str;
        }

        window.convertNumberToChinese = convertNumberToChinese

        // console.log('convertNumberToChinese(input) ===> ', convertNumberToChinese(input))

        function getChineseDigit(digit) {
            if (digit === 0) {
                return NUMS[0];
            } else {
                return NUMS[digit];
            }
        }

        // 处理四位数的数据
        function processChunk(chunk, unit) {
            let str = '';
            // 取千位
            // debugger
            if (chunk >= 1000) {
                str += getChineseDigit(Math.floor(chunk / 1000)) + '千';
            } else {
                // 10100 要取  一万零一百
                if (str.slice(-1) == '零') str += '零'
            }
            // 移除千位 1200 移除1000 变成200
            chunk %= 1000;
            // 取百位
            if (chunk >= 100) {
                str += getChineseDigit(Math.floor(chunk / 100)) + '百';
            } else {
                if (str.slice(-1) !== '零') str += '零'

            }
            // 移除百位 取个位
            chunk %= 100;
            // 
            if (chunk >= 10) {
                str += getChineseDigit(Math.floor(chunk / 10)) + '十';
            } else {
                if (str.slice(-1) !== '零') str += '零'
            }
            chunk %= 10;
            // 各位不做处理,直接加上, 例如: 五十四
            if (chunk > 0) {
                str += getChineseDigit(chunk);
            }
            // 字符加上单位
            return str + QUOT[unit];
        }
    </script>
</body>

</html>